from EventManagement import EventUser
from TackGameEvents import ModuleLoadEvent, DataLoadEvent, KeyDownEvent, PlayerMoveDownEvent, PlayerMoveLeftEvent, PlayerMoveRightEvent, PlayerMoveUpEvent
from CoreEvents import QuitRequestEvent, AppStartEvent
from TackGameEvents import BackgroundKeyRequestEvent

################################################################################
class Game(EventUser):
    ############################################################################
    def __init__(self):
        self.RegisterEvent(BackgroundKeyRequestEvent, self.BgKeyReq)
        self.RegisterEvent(KeyDownEvent, self.KeyPress)
        self.RegisterEvent(AppStartEvent, self.AppStart)
        self._sUpKey = 'q'
        self._sDownKey = 'a'
        self._sLeftKey = 'o'
        self._sRightKey = 'p'
        
        self._sQuitKey = 'x'
    ############################################################################
    
    def AppStart(self, oEvent):
        self.SendEvent(ModuleLoadEvent())
        self.SendEvent(DataLoadEvent())
    
    def BgKeyReq(self, oEvent):
        oEvent.GetEventData("rCallback")("bg")
    
    ############################################################################
    def KeyPress(self, oEvent):
        sUniCode = oEvent.GetEventData('sUniCode')
        if not sUniCode: return
        
        if sUniCode == self._sUpKey:
            self.SendEvent(PlayerMoveUpEvent())
        elif sUniCode == self._sDownKey:
            self.SendEvent(PlayerMoveDownEvent())
        elif sUniCode == self._sLeftKey:
            self.SendEvent(PlayerMoveLeftEvent())
        elif sUniCode == self._sRightKey:
            self.SendEvent(PlayerMoveRightEvent())
        elif sUniCode == self._sQuitKey:
            self.SendEvent(QuitRequestEvent())
    ############################################################################
################################################################################

